/**
 * @file list.h
 * @brief 先入先出列表
 *
 * @code 例
 *   init:
 *     TList_handle list_handle = -1;
 *     capacity = 10;
 *
 *     list_handle = TListCreate(容量);
 *
 *   fini:
 *     TListDestroy(list_handle);
 *     list_handle = -1;
 *
 *   push:
 *     void *new_item;
 *     TListPush(list_handle, new_item);
 *
 *   peek:
 *     void *item = TListPeek(list_handle);
 *   pop:
 *     void *item = TListPop(list_handle);
 *
 * @endcode
 *
 * @author Liebing.Yang
 * @date 2024/06/01
 *
*/

#ifndef _LIST_H_
#define _LIST_H_
#include "common/base_type.h"

typedef Int32 TList_handle;

/**
 * 创建一个列表
 *
 * @return -1 无可用列表
 * @return -2 有可用列表，但分配空间失败
 * @return >=0 返回列表句柄，通过句柄访问列表
*/
TList_handle TListCreate(void);

void TListDestroy(TList_handle handle);

Int32 TListItemCount(TList_handle handle);

Bool TListPush(TList_handle handle, void *new_item);

void* TListPeek(TList_handle handle);

void* TListPop(TList_handle handle);

#endif  ///< _LIST_H_
